package tray

import (
	"os"

	"golang.org/x/sys/windows/registry"
)

func (t *Tray) getAutoRunKey() (k registry.Key, err error) {
	return registry.OpenKey(registry.CURRENT_USER, `Software\Microsoft\Windows\CurrentVersion\Run`, registry.ALL_ACCESS)
}

func (t *Tray) checkAutoRun() bool {
	k, err := t.getAutoRunKey()
	if err != nil {
		t.logger.Error("registry.OpenKey err:%s", err.Error())
		return false
	}
	defer k.Close()
	if _, _, err := k.GetStringValue(t.autorunName); err != nil {
		t.logger.Error("GetStringValue err:%s", err.Error())
		return false
	}
	return true
}

func (t *Tray) regAutoRun() (err error) {
	k, err := t.getAutoRunKey()
	if err != nil {
		t.logger.Error("registry.OpenKey err:%s", err.Error())
		return
	}
	defer k.Close()
	dir, _ := os.Executable()
	if err := k.SetStringValue(t.autorunName, dir); err != nil {
		t.logger.Error("SetStringValue err:%s", err.Error())
	}
	return
}

func (t *Tray) unRegAutoRun() {
	k, err := t.getAutoRunKey()
	if err != nil {
		t.logger.Error("unRegAutoRun registry.OpenKey err:%s", err.Error())
		return
	}
	defer k.Close()
	if err := k.DeleteValue(t.autorunName); err != nil {
		t.logger.Error("unRegAutoRun DeleteValue err:%s", err.Error())
	}

}
